package com.eastfair.tag.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperService;
import com.eastfair.core.base.R;
import com.eastfair.tag.dto.TagDTO;
import com.eastfair.tag.dto.TagPageQuery;
import com.eastfair.tag.entity.Tag;
import com.eastfair.tag.vo.TagVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 标签表
 * </p>
 *
 * @author zjn
 * @date 2022-03-02
 */
public interface TagService extends SuperService<Tag> {

    /**
     * 新增标签
     *
     * @param tagDTO 标签实体
     * @return 是否成功
     */
    R<Boolean> saveTag(TagDTO tagDTO);

    /**
     * 删除标签
     *
     * @param id 主键
     * @return 是否成功
     */
    R<Boolean> deleteTag(Long id);

    /**
     * 修改标签
     *
     * @param tagDTO 标签实体
     * @return 是否成功
     */
    R<Boolean> updateTag(TagDTO tagDTO);

    /**
     * 分类标签树形列表
     *
     * @return 分类标签树形列表
     */
    R<List<TagVO>> listTreeClassify();

    /**
     * 分页列表查询标签列表
     * @param params 分页信息
     * @return 标签列表
     */
    R<Page<TagVO>> pageList(PageParams<TagPageQuery> params);

    /**
     * 获取分类下所有标签
     *
     * @param subjectType 标签类型
     * @return 标签列表
     */
    R<TagVO> listBySubjectType(String subjectType);

}
